#include <iostream>
#include <string>
#include <algorithm>
#include <iostream>
#include <stack>
#include <vector>
#include <algorithm>
using namespace std;

//int main() {
//    string str;
//    getline(cin, str);
//    stack<char> st;
//    for (auto ch : str)
//    {
//        if (st.empty())
//        {
//            st.push(ch);
//        }
//        else {
//            ch == st.top() ? st.pop() : st.push(ch);
//        }
//    }
//    if (st.empty())
//    {
//        cout << 0 << endl;
//    }
//    else {
//        string ans;
//        while (!st.empty())
//        {
//            char ch = st.top();
//            st.pop();
//            ans.push_back(ch);
//        }
//        reverse(ans.begin(), ans.end());
//        cout << ans << endl;
//    }
//    return 0;
//}
//using namespace std;
//
//
//
//int CountTwo(int val)
//{
//    string str = to_string(val);
//    int ret = 0;
//    for (auto ch : str)
//    {
//        if (ch == '2')
//        {
//            ret++;
//        }
//    }
//    return ret;
//}
//
//int main() {
//    int L = 0, R = 0;
//    int count = 0;
//    cin >> L >> R;
//    for (int i = L; i <= R; ++i)
//    {
//        count += CountTwo(i);
//    }
//    return count;
// 
// 
//}

//#include <algorithm>
//#include <iostream>
//#include <string>
//#include <stack>
//#include <algorithm>
//using namespace std;
//
//int main() {
//    string str;
//    getline(cin, str);
//    stack<char> st;
//    for (auto ch : str)
//    {
//        if (st.empty())
//        {
//            st.push(ch);
//        }
//        else {
//            ch == st.top() ? st.pop() : st.push(ch);
//        }
//    }
//    if (st.empty())
//    {
//        cout << 0 << endl;
//    }
//    else {
//        string ans;
//        while (!st.empty())
//        {
//            char ch = st.top();
//            st.pop();
//            ans.push_back(ch);
//        }
//        reverse(ans.begin(), ans.end());
//        cout << ans << endl;
//    }
//    return 0;
//}

int minCostClimbingStairs(vector<int>& cost) {
    int n = cost.size();
    vector<int> dp(n + 1);
    dp[0] = dp[1] = 0;
    for (int i = 2; i <= n; ++i)
        dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);
    return dp[n];
}